# 函数递归
# n 的阶乘
def test1(n):
    if n == 1:
        return 1
    return n * test1(n - 1)

ret = test1(5)
print(ret)

# 函数形参的缺省值-跟C++一样
def test2(a, b = 999):
    print(a, b)

test2(10)

# 关键字传参-指定参数名传参
def test3(a, b):
    print(a)
    print(b)

test3(b = 888, a = 777)

# 列表和元组
# 批量定义多个变量，用一个变量产生多个变量，类似C++的数组
# 列表和元组都是这样的“数组”
# 不同的是：列表是可变的，元组是不可变的

# 创建列表

# 1.直接用字面值来创建
# [] 表示一个空列表
a = []
print(type(a))

# 2. 使用list()来创建
b = list()
print(type(b))

# 3. 可以在创建列表的时候，初始化内容
c = [1,2,3,4]
print(c)

# 4. 可以在同一个列表里面放不同的类型的变量
d = [1, 2, "haha", True, 9.99]
print(d)

# 下标访问，获取列表元素
# 下标访问运算符 []
print(d[2])
# 下标是从0开始的

# 使用下标可以修改元素
d[1] = 1314
print(d[1])
print(d)

# 可以用len函数获取列表长度
# len支持字符串、列表、元素、字典、类...动态类型
print(len(d))

# 下标可以写成负数
e = [1,2,3,4]
print(e[len(e)-1])
print(e[-1])
# 或者理解为-1就是倒数第一个元素


